/**
  @file ait_config.c
  @brief It contains the configurations need to be ported to the customer platform.
  @author Rogers

  @version
- 1.0 Original version
 */

#include "config_fw.h"

#include "mmp_lib.h"
#include "ait_config.h"
//#include "ait_utility.h"
#include "mmps_system.h"
#include "mmps_dsc.h"
#include "mmps_audio.h"
#include "mmps_display.h"
#include "mmps_3gprecd.h"
//#include "mmps_vidplay.h"
#include "mmps_sensor.h"
//#include "mmps_vidphone.h"
#if PCAM_EN==1
#include "mmps_usb.h"
#endif


#if (CHIP == P_V2)||(CHIP == VSN_V2)||(CHIP == VSN_V3)

#define QTABLE_NUM 3
#if 1//defined(BUILD_CE) && (DSC_EN)
extern const   MMP_UBYTE Q_table[QTABLE_NUM][128];
#else
const   MMP_UBYTE Q_table[QTABLE_NUM][128] = {
#if 0
// high quality ISP new Qtable 
					1,
				  1,  1,
				1,  1,  1,
			  1,  1,  1,  1,
			1,  1,  1,  1,  1,
		  1,  1,  1,  1,  1,  1,
		1,  1,  1,  1,  1,  1,  1,
	  2,  2,  1,  1,  1,  1,  2,  2,
	    2,  2,  1,  1,  1,  2,  2,
		  2,  2,  2,  2,  2,  2,
		    3,  2,  2,  2,  3,
			  3,  2,  2,  3,
			    3,  2,  3,
				  3,  3,
				    3,
				    1,
				  1,  1,
				1,  1,  1,
			  2,  1,  1,  2,
			3,  2,  2,  2,  3,
		  4,  3,  2,  2,  3,  4,
		5,  4,  3,  3,  3,  4,  5,
	  6,  5,  4,  3,  3,  4,  5,  6,
	    7,  6,  5,  4,  5,  6,  7,
		  7,  7,  6,  6,  7,  7,
		    8,  7,  7,  7,  8,
			  8,  8,  8,  8,
			    8,  8,  8,
				  8,  8,
				    8,
#else
// high quality
0x08,0x06,0x06,0x06,0x06,0x06,0x08,0x08,
0x08,0x08,0x0c,0x08,0x06,0x08,0x0c,0x0e,
0x0a,0x08,0x08,0x0a,0x0e,0x10,0x0c,0x0c,
0x0e,0x0c,0x0c,0x10,0x10,0x10,0x12,0x12,
0x12,0x12,0x10,0x14,0x14,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,

0x08,0x0a,0x0a,0x10,0x0e,0x10,0x14,0x14,
0x14,0x14,0x20,0x14,0x14,0x14,0x20,0x20,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
#endif
//normal quality
0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0c,0x0c,
0x0c,0x0c,0x10,0x0c,0x0a,0x0a,0x10,0x16,
0x10,0x0c,0x0c,0x10,0x16,0x18,0x10,0x10,
0x16,0x10,0x10,0x18,0x18,0x18,0x1c,0x1c,
0x1c,0x1c,0x18,0x20,0x20,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,

0x0a,0x10,0x10,0x18,0x16,0x18,0x20,0x20,
0x20,0x20,0x28,0x20,0x20,0x20,0x28,0x28,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
//low quality
0x0b,0x0c,0x0c,0x0c,0x0c,0x0c,0x10,0x10,
0x10,0x10,0x14,0x10,0x0c,0x0c,0x14,0x1a,
0x14,0x10,0x10,0x14,0x1a,0x1c,0x14,0x14,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,

0x0c,0x12,0x12,0x1a,0x1a,0x1c,0x24,0x24,
0x24,0x24,0x2c,0x24,0x24,0x24,0x2c,0x2c,
0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
};
#endif


#if PCAM_EN==1
#if 0
/// Usb Memory Allocation Information
static MMPS_USBMODE_BUFFER_INFO m_UsbBufInfo;
#endif

/**@brief The system configuration

Use @ref MMPS_System_GetConfiguration to assign the field value of it.
You should read this functions for more information.
*/
//static MMPS_SYSTEM_CONFIG	m_systemConfig;
/**@brief The system operation mode.*/

#if (ENABLE_AUD_P_FEATURE == 1)
static MMPS_AUDIOMODE_CONFIG_INFO m_AudioBufInfo ;
#endif
#endif
//==============================================================================
//                              FUNCTION PROTOTYPES
//==============================================================================

#if PCAM_EN==0
//------------------------------------------------------------------------------
//  Function    : MMPC_Sensor_InitConfig
//  Description :
//------------------------------------------------------------------------------
MMP_BOOL MMPC_Sensor_InitConfig(void)
{
/*
	#if (PROJECT == DEMOKIT)

    //5M/1.3M/8M Sensor
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorpreviewmodenum = 2;

#if BIND_SENSOR_OV9726
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 720;//800;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 720;//800;
#endif
#if BIND_SENSOR_OV2710 || BIND_SENSOR_S5K5B3GX
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 1920;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 1088;//800;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1920;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 1088;//800;
#endif
#if BIND_SENSOR_MT9T002
    // sean@2011_01_18, fixed bug
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0]  = 2304 ;// 1920;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 1296 ;//1088;//800;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1]  = 2304 ;//1920;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 1296 ;//1088;//800;
#endif
#if BIND_SENSOR_OV9710
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 720;//800;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 720;//800;
#endif
#if BIND_SENSOR_S5K6A1GX
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 720;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 720;
#endif
#if BIND_SENSOR_S5K4B2FX
  #if SKYPE_FOV
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 1600;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 900;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1600;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 900;
  #else
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 1600;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 1200;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1600;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 1200;
  #endif
#endif
#if BIND_SENSOR_IMX045ES || BIND_SENSOR_OV5650 || BIND_SENSOR_MT9P111 || BIND_SENSOR_OV5680
  #if 0//SKYPE_FOV
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 2560;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 1920;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 720;
  #else
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 2560;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 1920;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 960;
  #endif
#endif    
#if BIND_SENSOR_IMX046TS
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[0] = 3264;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[0] = 2448;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewwidth[1] = 1600;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorpreviewheight[1] = 1200;
#endif

    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorcapturemodenum = 2;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorcapturewidth[0] = 2560;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorcaptureheight[0] = 1920;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorcapturewidth[1] = 1280;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].usSensorcaptureheight[1] = 960;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensordefaultpreviewmode = 1;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensordefaultphasecount = 0;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[0] = 0;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[1] = 1;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[2] = 2;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[3] = 3;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[4] = 4;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[5] = 5;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[6] = 6;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[7] = 7;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[8] = 8;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[9] = 9;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[10] = 10;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[11] = 11;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[12] = 12;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[13] = 13;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[14] = 14;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[15] = 15;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[16] = 16;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[17] = 17;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubSensorevdata[18] = 18;

	MMPS_Sensor_GetConfiguration()->sensorconfig[0].bRawStoreDownsample[0] = MMP_TRUE;
	MMPS_Sensor_GetConfiguration()->sensorconfig[0].bRawStoreDownsample[1] = MMP_FALSE;
	


    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubFrameRate[0] = 0;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubFrameRate[1] = 1;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubFrameRate[2] = 2;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubFrameRate[3] = 3;
    MMPS_Sensor_GetConfiguration()->sensorconfig[0].ubFrameRate[4] = 4;

    //for Face Detection
    MMPS_Sensor_GetConfiguration()->faceDetectInputPath = MMPS_SENSOR_FDTC_2PIPE; //one pipe for preview, one pipe for FDTC
    MMPS_Sensor_GetConfiguration()->faceDetectDisplayMethod = MMPS_SENSOR_FDTC_FW_DRAW_FACE;
    MMPS_Sensor_GetConfiguration()->bFaceDetectEnable = MMP_TRUE;
    MMPS_Sensor_GetConfiguration()->usFaceDetectGrabScaleM = 80;
    MMPS_Sensor_GetConfiguration()->ubDetectFaceNum = 15; //Max: 15
    MMPS_Sensor_GetConfiguration()->ubFaceDetectInputBufCnt = 2;
    MMPS_Sensor_GetConfiguration()->ulFaceDetectWorkBufSize = 0x80000; //for 160x120, need cacheable
    MMPS_Sensor_GetConfiguration()->ulFaceDetectFeatureBufSize = 0x5000; //for 160x120, need cacheable
    MMPS_Sensor_GetConfiguration()->usFaceDetectInfoBufSize = 0x200; //512B
	#endif
*/
    return MMP_TRUE;
} /* MMPC_Sensor_InitConfig */
#endif


//------------------------------------------------------------------------------
//  Function    : MMPC_DSC_InitConfig
//  Description :
//------------------------------------------------------------------------------
#if PCAM_EN==0
MMP_BOOL MMPC_DSC_InitConfig(void)
{
    
    return MMP_TRUE;
} /* MMPC_DSC_InitConfig */
#endif

/** @brief Initialized the preset configurations for 3GP playing

@pre This function must be called after MMPC_Display_InitConfig because of the TV attribute dependence
@pre The DRAM is initlized so that the DRAM type and size are assigned.
@return Always returns true;
*/
#if (VAAC_P_EN)
MMP_BOOL MMPC_3GPPLAY_InitConfig(void)
{
    MMPS_SYSTEM_VIDEODECMODES *pModes;

    pModes = MMPS_VIDPLAY_GetConfiguration();
	#if (PROJECT == DEMOKIT)
    pModes->deblock_type                = MMPS_VIDPLAY_DEBLOCK_NONE;
    #endif
    

//    pModes->deblock_type                = MMPS_VIDPLAY_DEBLOCK_Y_ONLY;
    pModes->bSupportKaraokeMode         = MMP_FALSE;

    //3GPPLAY mode standard LCD out, fit width for demo
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.usX                  = 0;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.usY                  = 0;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.usWidth              = MMPS_Display_GetConfiguration()->mainlcd.usWidth;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.usHeight             = MMPS_Display_GetConfiguration()->mainlcd.usHeight;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.bMirror              = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.rotationtype         = MMPD_DISPLAY_ROTATE_NO_ROTATE;
    //pModes->config[VIDEOPLAY_MODE_STD_LCD].display.outputpanel          = MMPD_DISPLAY_P_LCD_FLM;
    //pModes->config[VIDEOPLAY_MODE_STD_LCD].display.outputpanel          = MMPD_DISPLAY_P_LCD;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.outputpanel          = MMPD_DISPLAY_P_LCD;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.bFullyFilled         = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.bKeepRatio           = MMP_TRUE;
    pModes->config[VIDEOPLAY_MODE_STD_LCD].display.bUseScaler           = MMP_TRUE;


    //3GPPLAY mode standard LCD out, custom display
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.usX           = 0;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.usY           = 0;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.usWidth       = MMPS_Display_GetConfiguration()->mainlcd.usWidth;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.usHeight      = MMPS_Display_GetConfiguration()->mainlcd.usHeight;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.bMirror       = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.rotationtype  = MMPD_DISPLAY_ROTATE_RIGHT_90;
    //pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.outputpanel   = MMPD_DISPLAY_P_LCD_FLM;
    //pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.outputpanel   = MMPD_DISPLAY_P_LCD;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.outputpanel   = MMPD_DISPLAY_P_LCD;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.bFullyFilled  = MMP_TRUE;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.bKeepRatio    = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_FULLSCREEN_LCD].display.bUseScaler    = MMP_TRUE;
    
    
    //3GPPLAY mode standard LCD out, Rotate 180
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.usX              = 0;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.usY              = 0;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.usWidth          = MMPS_Display_GetConfiguration()->mainlcd.usWidth;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.usHeight         = MMPS_Display_GetConfiguration()->mainlcd.usHeight;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.bMirror          = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.rotationtype     = MMPD_DISPLAY_ROTATE_RIGHT_180;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.outputpanel      = MMPD_DISPLAY_P_LCD;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.bFullyFilled     = MMP_TRUE;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.bKeepRatio       = MMP_TRUE;
    pModes->config[VIDEOPLAY_MODE_ZOOM_LCD].display.bUseScaler       = MMP_TRUE;
    
    //3GPPLAY mode standard LCD out, Rotate 270
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.usX          = 0;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.usY          = 0;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.usWidth      = MMPS_Display_GetConfiguration()->mainlcd.usWidth;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.usHeight     = MMPS_Display_GetConfiguration()->mainlcd.usHeight;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.bMirror      = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.rotationtype = MMPD_DISPLAY_ROTATE_RIGHT_270;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.outputpanel  = MMPD_DISPLAY_P_LCD;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.bFullyFilled = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.bKeepRatio   = MMP_TRUE;
    pModes->config[VIDEOPLAY_MODE_ACTUAL_LCD].display.bUseScaler   = MMP_FALSE;

    // standard TV out, fit width for demo
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.usX                  = 0;
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.usY                  = 0;
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.usWidth              = 688;
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.usHeight             = 480;
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.bMirror              = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.rotationtype         = MMPD_DISPLAY_ROTATE_NO_ROTATE;
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.outputpanel          = MMPD_DISPLAY_TV;
    pModes->config[VIDEOPLAY_MODE_NTSC_TV].display.bFullyFilled         = MMP_FALSE;

    // standard TV out, fit width for demo
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.usX                   = 0;
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.usY                   = 0;
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.usWidth               = 720 - 28;
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.usHeight              = 576;
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.bMirror               = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.rotationtype          = MMPD_DISPLAY_ROTATE_NO_ROTATE;
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.outputpanel           = MMPD_DISPLAY_TV;
    pModes->config[VIDEOPLAY_MODE_PAL_TV].display.bFullyFilled          = MMP_FALSE;
    
    pModes->config[VIDEOPLAY_MODE_CCIR].display.usX                  = 0;
    pModes->config[VIDEOPLAY_MODE_CCIR].display.usY                  = 0;
    pModes->config[VIDEOPLAY_MODE_CCIR].display.usWidth              = 800;
    pModes->config[VIDEOPLAY_MODE_CCIR].display.usHeight             = 480;
    pModes->config[VIDEOPLAY_MODE_CCIR].display.bMirror              = MMP_FALSE;
    pModes->config[VIDEOPLAY_MODE_CCIR].display.rotationtype         = MMPD_DISPLAY_ROTATE_NO_ROTATE;
    pModes->config[VIDEOPLAY_MODE_CCIR].display.outputpanel          = MMPD_DISPLAY_CCIR;
    pModes->config[VIDEOPLAY_MODE_CCIR].display.bFullyFilled         = MMP_FALSE;

	//buffer size for video stream
	pModes->ulVideoStreamBufSize = 300 * 1024;
    pModes->ulRotateDMABufNum    = 3;
 
	#if (CHIP == P_V2)||(CHIP == VSN_V2)
    pModes->usMP4DecBufNum       = 6;  // must >= 3
    #endif
	
	pModes->window_type         = MMPD_DISPLAY_WIN_PIP;
	pModes->videoplay_mode      = VIDEOPLAY_MODE_STD_LCD;
	
    // ===== Memroy mode config =====
    pModes->lMovThreshold   = 512;
    return MMP_TRUE;
} /* MMPC_3GPPLAY_InitConfig */
#endif // VAAC_P_EN

#endif

//------------------------------------------------------------------------------
//  Function    : MMPC_Display_InitConfig
//  Description :
//------------------------------------------------------------------------------
#if PCAM_EN==0
MMP_BOOL MMPC_Display_InitConfig(void)
{
#if LCD_DISPLAY_ON
    MMPS_Display_GetConfiguration()->mainlcd.lcdtype = MMPS_DISPLAY_P_LCD;
    MMPS_Display_GetConfiguration()->mainlcd.cssel = MMPS_DISPLAY_CSSEL_1;
    MMPS_Display_GetConfiguration()->mainlcd.initialfx = MMPC_Display_InitMainLCD;
    MMPS_Display_GetConfiguration()->mainlcd.reinitialfx = MMPC_Display_ReinitMainLCD;

    #if (PROJECT == DEMOKIT)||(PROJECT == PRESTIGE)||(PROJECT == PURE)
    MMPS_Display_GetConfiguration()->mainlcd.usWidth = 240;
    MMPS_Display_GetConfiguration()->mainlcd.usHeight = 320;
	#endif
	
    #if (PROJECT == STAGE)
    MMPS_Display_GetConfiguration()->mainlcd.usWidth = 240;
    MMPS_Display_GetConfiguration()->mainlcd.usHeight = 400;
    #endif

    MMPS_Display_GetConfiguration()->mainlcd.colordepth = MMPS_LCD_COLORDEPTH_16;
    MMPS_Display_GetConfiguration()->mainlcd.ulBgColor = 0x000000;

    MMPS_Display_GetConfiguration()->ntsctv.usStartX = 0;
    MMPS_Display_GetConfiguration()->ntsctv.usStartY = 0;
    MMPS_Display_GetConfiguration()->ntsctv.usDisplayWidth = 720;
    MMPS_Display_GetConfiguration()->ntsctv.usDisplayHeight = 480;
    MMPS_Display_GetConfiguration()->ntsctv.ulDspyBgColor = 0x00;
    MMPS_Display_GetConfiguration()->ntsctv.ubTvBgYColor = 0x00;
    MMPS_Display_GetConfiguration()->ntsctv.ubTvBgUColor = 0x80;
    MMPS_Display_GetConfiguration()->ntsctv.ubTvBgVColor = 0x80;

    MMPS_Display_GetConfiguration()->paltv.usStartX = 26;
    MMPS_Display_GetConfiguration()->paltv.usStartY = 0;
    MMPS_Display_GetConfiguration()->paltv.usDisplayWidth = 720 - 26;
    MMPS_Display_GetConfiguration()->paltv.usDisplayHeight = 576;
    MMPS_Display_GetConfiguration()->paltv.ulDspyBgColor = 0x00;
    MMPS_Display_GetConfiguration()->paltv.ubTvBgYColor = 0x00;
    MMPS_Display_GetConfiguration()->paltv.ubTvBgUColor = 0x80;
    MMPS_Display_GetConfiguration()->paltv.ubTvBgVColor = 0x80;
    
    MMPS_Display_GetConfiguration()->hdmi.colortype = MMPS_DISPLAY_HDMICOLOR_Y0UY1V;
    MMPS_Display_GetConfiguration()->hdmi.usDisplayWidth = 800;
    MMPS_Display_GetConfiguration()->hdmi.usDisplayHeight = 480;
    MMPS_Display_GetConfiguration()->hdmi.ulDspyBgColor = 0x00000000;
    MMPS_Display_GetConfiguration()->hdmi.OutputMode = MMPS_DISPLAY_HDMIOUTPUT_USERDEF;
    //MMPS_Display_GetConfiguration()->hdmi.colortype = MMPS_DISPLAY_HDMICOLOR_Y0UY1V;
    
    MMPS_Display_GetConfiguration()->ccir.ubColorType = MMPD_CCIR_OUTPUT_YUV422;
    // ubOutputColor is needed same as ubColorType while ubColorType is not yuv420
    MMPS_Display_GetConfiguration()->ccir.ubOutputColor = MMPD_CCIR_OUTPUT_YUV422;
    MMPS_Display_GetConfiguration()->ccir.usDisplayWidth = 800;
    MMPS_Display_GetConfiguration()->ccir.usDisplayHeight = 480;
    MMPS_Display_GetConfiguration()->ccir.ubBusWidth = MMPD_CCIR_CCIRBUS8BITS;
    MMPS_Display_GetConfiguration()->ccir.ubClockDiv = 3;

    MMPS_Display_GetConfiguration()->ulReservedOsdSize = 240*320*2*4;
    MMPS_Display_GetConfiguration()->bDoubleBufferOSD = MMP_FALSE;
    MMPS_Display_GetConfiguration()->OutputPanel = MMPS_DISPLAY_MAIN_LCD;
#endif    
    return MMP_TRUE;
} /* MMPC_Display_InitConfig */
#endif
//------------------------------------------------------------------------------

//  Function    : MMPC_AUDIO_InitConfig
//  Description :
//------------------------------------------------------------------------------
#if (ENABLE_AUD_P_FEATURE == 1)
MMP_BOOL MMPC_AUDIO_InitConfig(void)
{
   // MMP_UBYTE i,j;

    MMPS_AUDIO_GetConfiguration()->AudioOutPath = MMPS_AUDIO_OUT_AFE_HP | MMPS_AUDIO_OUT_AFE_LINE;
	#if (PROJECT == DEMOKIT)
	MMPS_AUDIO_GetConfiguration()->AudioInPath = MMPS_AUDIO_IN_AFE_DIFF;
	#endif

   
    #if AUDIO_P_EN==1
    //MMPS_AUDIO_InitialInPath(MMPS_AUDIO_GetConfiguration()->AudioInPath);
    //MMPS_AUDIO_InitialOutPath(MMPS_AUDIO_GetConfiguration()->AudioOutPath);

    MMPS_AUDIO_GetConfiguration()->ubVolumeLevel = 31;
    for(i = 0; i < MMPS_AUDIO_GetConfiguration()->ubVolumeLevel; i++)
        for(j=0; j < 3; j++) {
            MMPS_AUDIO_GetConfiguration()->ubAudioOutVolHPTable[i][j] = ubAudOutVol_HP_table[i][j];
        }

    for(i = 0; i < MMPS_AUDIO_GetConfiguration()->ubVolumeLevel; i++)
        for(j=0; j < 2; j++) {
            MMPS_AUDIO_GetConfiguration()->ubAudioOutVolLineTable[i][j] = ubAudOutVol_Line_table[i][j];
        }

    //SBC setting
    
    //MMPS_AUDIO_GetConfiguration()->SBC.ChannelMode = MMPS_AUDIO_SBC_CHANNEL_STEREO;//MMPS_AUDIO_SBC_CHANNEL_DUAL;
    //MMPS_AUDIO_GetConfiguration()->SBC.AllocMethod = MMPS_AUDIO_SBC_METHOD_SNR;//MMPS_AUDIO_SBC_METHOD_LOUDNESS;
    //MMPS_AUDIO_GetConfiguration()->SBC.usNrofBlocks = 16;
    //MMPS_AUDIO_GetConfiguration()->SBC.usNrofSubbands = 8;
    //MMPS_AUDIO_GetConfiguration()->SBC.ulBitRate = 350;//240;
    //MMPS_AUDIO_GetConfiguration()->SBC.ulIntPeriod          = 200;
    //MMPS_AUDIO_GetConfiguration()->SBC.ulMaxTransferSize    = 16*1024;


    MMPS_AUDIO_GetConfiguration()->ulNameBufSize = 0x200;
    MMPS_AUDIO_GetConfiguration()->ulParameterBufSize = 0x400;
    MMPS_AUDIO_GetConfiguration()->ulSdBufSize = 0x400;
    MMPS_AUDIO_GetConfiguration()->ulSmBufSize = 0x400;
    #endif
    
    
    #if AUDIO_P_EN==1
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AACPLUS_P_CARD_MODE].ulBufStartAddr = 0x101C00;//0x108000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AACPLUS_P_CARD_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AACPLUS_P_CARD_MODE].ulSbcBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AACPLUS_P_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AACPLUS_P_MEM_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AACPLUS_P_MEM_MODE].ulSbcBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MIDI_P_CARD_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MIDI_P_CARD_MODE].ulPlayBufSize = 0x4000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MIDI_P_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MIDI_P_MEM_MODE].ulPlayBufSize = 0x10000;

    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_PCM_P_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_PCM_P_MEM_MODE].ulPlayBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_CARD_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_CARD_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_CARD_MODE].ulSbcBufSize = 0x8000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_CARD_MODE].ulWavBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_MEM_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_MEM_MODE].ulSbcBufSize = 0x8000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_P_MEM_MODE].ulWavBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_CARD_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_CARD_MODE].ulTagBufSize = 0x200;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_CARD_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_CARD_MODE].ulSbcBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_MEM_MODE].ulTagBufSize = 0x200;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_MEM_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WMA_P_MEM_MODE].ulSbcBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_CARD_MODE].ulBufStartAddr = 0x101C00;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_CARD_MODE].ulTagBufSize = 0x200;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_CARD_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_CARD_MODE].ulSbcBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_MEM_MODE].ulBufStartAddr = 0x101C00;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_MEM_MODE].ulTagBufSize = 0x200;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_MEM_MODE].ulPlayBufSize = 0x8000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_RA_P_MEM_MODE].ulSbcBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_CARD_MODE].ulBufStartAddr = 0x101C00;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_CARD_MODE].ulTagBufSize = 0x200;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_CARD_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_CARD_MODE].ulSbcBufSize = 0x8000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_MEM_MODE].ulBufStartAddr = 0x101C00;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_MEM_MODE].ulTagBufSize = 0x200;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_MEM_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_OGG_P_MEM_MODE].ulSbcBufSize = 0x8000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WAV_P_CARD_MODE].ulBufStartAddr = 0x2A000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WAV_P_CARD_MODE].ulPlayBufSize = 0x4000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WAV_P_CARD_MODE].ulSbcBufSize = 0x8000;

    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WAV_P_MEM_MODE].ulBufStartAddr = 0x2A000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_WAV_P_MEM_MODE].ulPlayBufSize = 0x4000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_P_CARD_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_P_CARD_MODE].ulPlayBufSize = 0x4000;

    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_P_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    //MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_P_MEM_MODE].ulPlayBufSize = 0x4000;
    #endif
    #if AUDIO_R_EN==1
    
    #if AMR_R_EN==1
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_R_CARD_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_R_CARD_MODE].ulRecBufSize = 0x4000;

    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_R_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AMR_R_MEM_MODE].ulRecBufSize = 0x4000;
    #endif
    #if AAC_R_EN==1
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AAC_R_CARD_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AAC_R_CARD_MODE].ulRecBufSize = 0x4000;

    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AAC_R_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_AAC_R_MEM_MODE].ulRecBufSize = 0x4000;
    #endif
    #if MP3_R_EN==1
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_R_CARD_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_R_CARD_MODE].ulRecBufSize = 0x4000;

    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_R_MEM_MODE].ulBufStartAddr = 0x101C00;//0x110000;
    MMPS_AUDIO_GetConfiguration()->AudioMode[MMPS_AUDIO_MP3_R_MEM_MODE].ulRecBufSize = 0x4000;
    
    #endif
    
    #endif
    return MMP_TRUE;
} /* MMPC_AUDIO_InitConfig */
#endif
//------------------------------------------------------------------------------
//  Function    : MMPC_USB_InitConfig
//  Description :
//------------------------------------------------------------------------------
MMP_BOOL MMPC_USB_InitConfig(void)
{
    return MMP_TRUE;
} /* MMPC_USB_InitConfig */

#if 0
//------------------------------------------------------------------------------
//  Function    : MMPC_System_InitConfig
//  Description :
//------------------------------------------------------------------------------
MMP_BOOL MMPC_System_InitConfig(void)
{
    MMPS_SYSTEM_CONFIG *pConfig = MMPS_System_GetConfiguration();

    pConfig->stackMemoryType = MMPS_DRAM_TYPE_AUTO;
    pConfig->ulStackMemoryStart = 0x1000000;
    pConfig->hostBusModeSelect = MMPS_HIF_16_BIT_MODE;
    pConfig->firmwareType = MMPS_FWTYPE_ALL;
    pConfig->ulMaxReserveBufferSize = 96*1024;
    pConfig->ulMaxReserveChannel = 2;
    pConfig->ulCpuFreq = 144;
    pConfig->ulG012Freq = 144;
    pConfig->ulG6Freq = 144;
    pConfig->stackMemoryMode = MMPS_DRAM_MODE_DDR;
    pConfig->ulStackMemorySize = 16*1024*1024;

    return MMP_TRUE;
} /* MMPC_System_InitConfig */
#endif

#if PCAM_EN==1
#if 0
//------------------------------------------------------------------------------
//  Function    : MMPS_System_GetConfiguration
//  Description :
//------------------------------------------------------------------------------
/** @brief The function gets the current system configuration for the host application

The function gets the current system configuration for reference by the host application. The current
configuration can be accessed from output parameter pointer. The function calls
MMPD_System_GetConfiguration to get the current settings from Host Device Driver Interface.

@return It return the pointer of the system configuration data structure.
*/
MMPS_SYSTEM_CONFIG* MMPS_System_GetConfiguration(void)
{
    return &m_systemConfig;
}
#endif

#if 0
//==============================================================================
//  Function    : MMPS_USB_GetConfiguration
//==============================================================================
/** 
    @brief  Get Usb Configuration Structure
    @return m_UsbBufInfo
*/
MMPS_USBMODE_BUFFER_INFO*  MMPS_USB_GetConfiguration(void)
{
    return &m_UsbBufInfo;
}
#endif

#if (ENABLE_AUD_P_FEATURE == 1)
MMPS_AUDIOMODE_CONFIG_INFO*  MMPS_AUDIO_GetConfiguration(void)
{
    return &m_AudioBufInfo;
}
#endif
#endif // PCAM_EN==1
